In computer science, a virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system. Each VM may function as a self-contained platform, running its own operating system (guest OS) and software applications (processes). Typically, a virtual machine manager (VMM) manages allocation and virtualization of computer resources and performs context switching, as may be necessary, to cycle between various VMs.
A host machine (e.g., computer or server) is typically enabled to simultaneously run multiple VMs, where each VM may be used by a remote client. The host machine allocates a certain amount of the host's resources to each of the VMs. Each VM is then able to use the allocated resources to execute applications, including guest operating systems. The VMM virtualizes the underlying hardware of the host machine or emulates hardware devices, making the use of the VM transparent to the guest operating system or the remote client that uses the VM.
A VM may include one or more applications that generate data (e.g., images, video, etc.) to be displayed at a physical display device of the host machine. Usually, a display connection is established with the VM to receive this data and to send user input provided at the display device back to the VM. If the host machine has multiple display devices that render data generated by the VM, the display connection with the VM becomes heavily burdened, negatively impacting the end user experience.
Further, a VM may run in a remote server environment, in which a centralized server is partitioned into multiple VMs that may, for example, host virtual desktops, thereby providing a desktop for an end user of a remote client device. A remote client may have multiple displays to render data generated by the VM. However, currently there is no mechanism that can effectively display the output of a VM on multiple screens or display terminals of a remote client.